/**
 * 
 */
package edu.acatlan.unam.client.ui;

//Librerías de la clase
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;

//Librerías del proyecto
import edu.acatlan.unam.client.ui.controlador.lienzo.ILienzo;
import edu.acatlan.unam.client.ui.controlador.lienzo.OpLienzo;

/**
 * @author jacobo
 * 
 * Esta clases genera el menú para trabajar con el lienzo.
 */
public class MenuLienzo extends VerticalPanel implements ClickHandler {
	//Propiedades de la clase
	private ILienzo controlador;
	private PushButton pshbtn[];
	
	/**
	 * Constructor de la clase
	 */
	public MenuLienzo(ILienzo manejador) {
		controlador = manejador;
		
		this.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
		this.setSpacing(3);
		this.setWidth("20px");
		this.getElement().setId("menu-lienzo");
		
		pshbtn = new PushButton[7];
		
		//Nueva tabla
		pshbtn[0] = new PushButton();
		pshbtn[0].getUpFace().setImage(new Image("img/shape_square_select.png"));
		pshbtn[0].setTitle("Seleccionar");
		
		pshbtn[1] = new PushButton();
		pshbtn[1].getUpFace().setImage(new Image("img/table.gif"));
		pshbtn[1].setTitle("Nueva tabla");
		
		pshbtn[2] = new PushButton("1:1");
		pshbtn[2].setTitle("Relación 1 a 1");
		
		pshbtn[3] = new PushButton("1:n");
		pshbtn[3].setTitle("Relación 1 a n");
		
		pshbtn[4] = new PushButton("n:m");
		pshbtn[4].setTitle("Relación n a m (Siguiente versión)");
		pshbtn[4].setEnabled(false);
		
		//Sincronizar la base de datos
		pshbtn[5] = new PushButton();
		pshbtn[5].getUpFace().setImage(new Image("img/arrow_switch_bluegreen.png"));
		pshbtn[5].setTitle("Sincronizar el modelo (Siguiente versión)");
		pshbtn[5].setEnabled(false);
		
		//Exportar la base de datos
		pshbtn[6] = new PushButton();
		pshbtn[6].getUpFace().setImage(new Image("img/icon_download.gif"));
		pshbtn[6].setTitle("Descargar SQL");
		
		for(int i = 0; i < pshbtn.length; i++) {
			pshbtn[i].setSize("18px", "18px");
			pshbtn[i].addClickHandler(this);
			this.add(pshbtn[i]);
		}
	}

	public void onClick(ClickEvent event) {
		//Se presionó un botón
		for(OpLienzo e : OpLienzo.values())
			if(pshbtn[e.ordinal()].equals(event.getSource())) {
				controlador.setEleccion(e);
				break;
			}
	}
}
